#ifndef _IMPROVED_SET_COVER_H
#define _IMPROVED_SET_COVER_H

#include <vector>
#include <list>

/**
 * Improved Greedy Algorithm based on Set Cover.
 * @param   matrix	matrix to cover
 * @param   nrows	number of rows in matrix
 * @param   ncols	number of columns in matrix
 * @param   cover	array to keep track of covered columns
 * @param   solutions	list of indices of solution rows
 */
void greedy_isc (
	std::vector<std::vector<int> > &matrix,
	size_t nrows,
	size_t ncols,
	int *cover,
	std::list<int> &solutions
	);

#endif
